<HEAD><TITLE>The tecla command-line editing library.</TITLE></HEAD>
<BODY bgcolor=add8e6>
<H1>The Tecla command-line editing library.</H1>

The tecla library provides UNIX and LINUX programs with interactive
command line editing facilities, similar to those of the UNIX tcsh
shell. In addition to simple command-line editing, it supports recall
of previously entered command lines, TAB completion of file names or
other tokens, and in-line wild-card expansion of filenames.  The
internal functions which perform file-name completion and wild-card
expansion are also available externally for optional use by programs.
<P>
In addition, the library includes a path-searching module.  This
allows an application to provide completion and lookup of files
located in UNIX style paths. Although not built into the line editor
by default, it can easily be called from custom tab-completion
callback functions. This was originally conceived for completing the
names of executables and providing a way to look up their locations in
the user's PATH environment variable, but it can easily be asked to
look up and complete other types of files in any list of directories.

<P>
Note that special care has been taken to allow the use of this library
in threaded programs. The option to enable this is discussed in the
Makefile, and specific discussions of thread safety are presented in
the included man pages.
<P>
The current version is version 1.6.1. This may be obtained from:
<P>
  <a href="libtecla-1.6.1.tar.gz">http://www.astro.caltech.edu/~mcs/tecla/libtecla-1.6.1.tar.gz</a>
<P>

For the sake of automated scripts, the following URL always points to
the latest version. Note that the version number can be found in the
README file.

<P>
  <a href="libtecla.tar.gz">http://www.astro.caltech.edu/~mcs/tecla/libtecla.tar.gz</a>
<P>

The library is distributed under a permissive non-copyleft
<a href="LICENSE.TERMS">free software license</a> (the X11 license with
the name of the copyright holder changed). This is compatible with,
but not as restrictive as the GNU GPL.

<H2>Release notes</H2>

The list of major changes that accompany each new release can be found
<a href="release.html">here</a>.

<H2>Modifications</H2>

The gory details of changes in the latest and previous versions of the
library can be found <a href="changes.html">here</a>.

<H2>Library documentation</H2>

The following are html versions of the libtecla man pages:

<UL>
<LI>  <a href="tecla.html">tecla</a>            -   Documentation for users of programs which use gl_get_line().
<LI>  <a href="libtecla.html">libtecla</a>           -  A programmers introduction to the tecla library.
<LI>  <a href="gl_get_line.html">gl_get_line</a>        -  The interactive line-input function.
<LI>  <a href="gl_io_mode.html">gl_io_mode</a>        -  Using gl_get_line() in a non-blocking fashion.
<LI>  <a href="cpl_complete_word.html">cpl_complete_word</a>  -  The word (eg. filename) completion function.
<LI>  <a href="ef_expand_file.html">ef_expand_file</a>     -  The filename expansion function.
<LI>  <a href="pca_lookup_file.html">pca_lookup_file</a>     -  A directory-list based filename lookup and completion module.
<LI>  <a href="enhance.html">enhance</a>     -  A  program that adds command-line editing to third party programs.
</UL>

<H2>Portability</H2>

In principle, the standard version of the library should compile
without any problems on any UNIX or UNIX like system. So far it has
been reported to work on the following systems:

<pre>
  Sun Solaris 2.5,2.6,7,8,9 with any of gcc, Sun C, or g++.
  Mandrake Linux 7.1 etc.., gcc
  Red Hat Linux 7 etc.., gcc
  Fedora Core 1, gcc
  Suse Linux 6.4, gcc
  IBM AIX 4.3.3, gcc
  HP-UX 10.20, HP-UX 11, gcc, c89
  FreeBSD, gcc
  Alpha OSF1, cc, gcc
  Mac OS X
  Cygwin (running under Windows)
  QNX
  NetBSD 1.6, 386, gcc
  SGI IRIX 6.5
</pre>

There haven't been many reports concerning the POSIX reentrant
version, so the absence of any of the above from the following list of
systems on which the reentrant version is known to work, shouldn't be
taken as an indication that the reentrant version doesn't work.

<pre>
  Sun Solaris 2.5,2.6,7,8,9 with any of gcc, Sun C, or g++.
  Mandrake Linux, gcc
  RedHat Linux, gcc
  Fedora Core, gcc
  SuSE Linux, gcc
  HP-UX 11, gcc
  IBM AIX 4.3.3, gcc
  Alpha OSF1, cc
  SGI IRIX 6.5
</pre>

The only system that is known to have issues with the reentrant
version of the library is SCO UnixWare 7.1.1. The problem is in the
system provided signal.h, which breaks when POSIX_C_SOURCE is
defined. It has been reported that this can be "fixed" by editing
signal.h.

<P>
If you compile the library on a system that isn't mentioned above,
please send E-mail to <b>mcs@astro.caltech.edu</b>.
<HR>
Martin Shepherd (31-Oct-2004)
</BODY>
